
#include <iostream>
#include <ostream>
#include <memory>
#include <string.h>
#include "stdio.h"

using namespace std;

class CString
{
    char* _str;
 
public:
	CString() = default;
	// 等同于 CString(){};
    //构造函数
    CString(const char* pstr) : _str(nullptr)
    {
        UpdateString(pstr);
    }
 
    //析构函数
    ~CString()
    {
        if (_str)
            free(_str);
    }
 
public:
    void UpdateString(const char* pstr) throw()
    {
        if (pstr == nullptr)
            return;
 
        if (_str)
            free(_str);
 
        _str = (char*)malloc(strlen(pstr) + 1);
        strcpy(_str,pstr);
    }
 
public:
    char* GetStr() const throw()
    {
        return _str;
    }
};

 
int main()
{
	auto str = std::make_unique<CString>("123");
	printf(str->GetStr());
	auto str2 = std::make_unique<CString>();
}